-*- mode: org -*-

* Changes in 0.3.4 (since 0.3.3)

** User visible changes

*** New commands

**** M-x guix-hash

**** M-x guix-superseded-packages

**** M-x guix-derivation-mode
It is enabled automatically in "/gnu/store/….drv" files.

**** M-x guix-scheme-mode
It is enabled automatically in various Guile files from the store (for
example, "/gnu/store/…-activate-service" or "/gnu/store/…-shepherd.conf").

*** Package List

Along with "obsolete" packages, names of "superseded", "unknown" and
"future" packages are also highlighted.

** Internal changes

*** New faces

- guix-derivation-file-name;
- guix-derivation-drv-file-name;
- guix-package-info-unknown;
- guix-package-info-future;
- guix-package-info-superseded;
- guix-package-list-unknown;
- guix-package-list-future;
- guix-package-list-superseded.

*** New variables

- guix-derivation-file-regexp;
- guix-derivation-file-regexp-group;
- guix-derivation-file-name-faces;
- guix-read-package-name-function;
- guix-hash-regexp;
- guix-default-hash-format;
- guix-default-key-policy;
- guix-default-elpa-archive;
- guix-default-size-sort-key;
- guix-default-search-paths-type;
- guix-default-graph-backend;
- guix-default-graph-node-type.

** Bug fixes

*** UUIDs are handled properly by System Generation Info

Previously "M-x guix-system-generations" followed by "i" failed if store
devices were specified by UUIDs in a system configuration.

* Changes in 0.3.3 (since 0.3.2)

** User visible changes

*** Profile List

New key bindings:

- "E": show 'search paths';
- "RET": show "Profile Info".

*** Profile Info

New interface.

*** Generation Info

New "Profile" and "Search paths" buttons.

*** Generation List

New key bindings:

- "E": show 'search paths';

** Internal changes

*** New faces

- 'guix-true';
- 'guix-faces'.

This faces are parent for:

- 'guix-package-info-installed-outputs' and
  'guix-package-info-uninstalled-outputs',
- 'guix-generation-info-current' and 'guix-generation-info-not-current',
- 'guix-profile-info-current' and 'guix-profile-info-not-current' (faces
  for the new "Profile Info" interface).

** Bug fixes

*** Editing user packages honors relative file names

Previously, "M-x guix-edit" might not open custom packages (from
GUIX_PACKAGE_PATH) because it assumed the file names were absolute.  Now
relative file names are also handled.

* Changes in 0.3.2 (since 0.3.1)

** User visible changes

*** Package Info

New key bindings:

- "i", "d", "U": install, delete, upgrade;
- "G": show package graph;
- "z": show package size;
- "L": lint package.

*** System Generation Info

More information added (bootloader, direct link to a system file name).

* Changes in 0.3.1 (since 0.3)

** User visible changes

*** New commands

**** M-x guix-info
**** M-x guix-services-from-system-config-file

* Changes in 0.3 (since 0.2.2)

** User visible changes

*** New commands

**** M-x guix-packages-from-system-config-file
**** M-x guix-package-graph
**** M-x guix-package-size
**** M-x guix-lint
**** M-x guix-switch-to-buffer
**** M-x guix-extended-command

*** Package List

New key bindings:

- "G": show package graph;
- "z": show package size;
- "L": lint package.

*** Package Info

New buttons: "Graph", "Size", "Lint".

** Internal changes

*** Guix REPL is used for shell completions

Previously, when you pressed TAB to complete some guix shell command, an
according 'guix ... -h' shell command was called to get possible
completions from the help output.  Now this help output is received
through Guix REPL, which is faster.

*** Temporary files are placed in a sub-directory

Previously, temporary files (REPL socket and generated graph images)
were put directly in 'temporary-file-directory'.  Now they are placed in
"emacs-guix-..." sub-directory.

* Changes in 0.2.2 (since 0.2.1)

** User visible changes

*** Hints

Press "h" (or any unbound key) in any 'list' or 'info' buffer to display
a hint message (a summary of the available key bindings).

*** Generation List

- "D" key is removed (use "=" instead).

- "s" key is used for sorting (as in the other lists), not for setting
  current generation as before (use "c" instead).

*** Location List

"e" key can be used to go to the location file.

** Internal changes

*** "guix.scm" added

* Changes in 0.2.1 (since 0.2)

** User visible changes

*** New commands

**** M-x guix-about

*** Profile List

"Current" column is added (current profile for package commands).

*** M-x guix-help

"info" buttons (for the commands) are added.

*** M-x guix

"G" (graph) completes =--backend= option, and "v" (View graph) opens
html graph if the backend is "d3js".

* Changes in 0.2 (since Emacs-Guix was a part of Guix)

** User visible changes

*** New commands

**** M-x guix-help

**** M-x guix-profiles

*** "P" key to display packages

Previously, "RET" was used in various lists to display packages.  Now it
is not the case in lists of generations and licenses ("RET" is used to
display Info buffer), but "P" can be used anywhere (in lists of
generations, licenses, locations and profiles).

*** Package List

"C-u ^" marks all installed packages (even not obsolete) for upgrading.

*** Generation List

New column with a number of packages is added.

*** Generation Info

Several new parameters and buttons are added (especially in Info buffer
for system generations).

*** 'guix-build-log-minor-mode' is not activated by default

To activate it, use:

(add-hook 'shell-mode-hook 'guix-build-log-minor-mode)

*** 'guix-devel-mode' is not activated by default

To activate it, use:

(add-hook 'scheme-mode-hook 'guix-devel-mode)

*** New variables

- guix-repl-use-latest: defines whether or not to use "guix pull"-ed
  code (default is t).

*** Renamed variables

guix-use-guile-server           -> guix-repl-use-server
guix-after-start-repl-hook      -> guix-repl-after-start-hook
guix-after-repl-operation-hook  -> guix-repl-after-operation-hook
guix-before-repl-operation-hook -> guix-repl-before-operation-hook
guix-ui-update-after-operation  -> guix-update-buffers-after-operation

*** Renamed buffers

"List" part was removed from buffer names (*Guix Packages* instead of
*Guix Package List*, etc.)

** Internal changes

*** Guile code is split into multiple modules

Previously, there was a single "guix-main.scm" file with the code for
all the features.  Now there are several Guile modules which are loaded
on demand.  This improves the start time of the Guix REPL, especially
for those commands that do not require to load many Guix modules (like
"M-x guix-licenses").

*** Guile load path is augmented on the Emacs-Lisp side

Previously, there was "guix-helper.scm" file (generated by
"./configure") that set up the required load-path and loaded
"guix-main.scm".  Now this is done on the elisp side, which is more
versatile as it also allows to use Emacs-Guix from MELPA or from source
without additional configuration.

*** Renamed files

guix-backend.el  -> guix-repl.el
guix-base.el     -> guix-misc.el
guix-messages.el -> guix-ui-messages.el

*** Removed files

**** guix-buffer.el, guix-entry.el, guix-history.el, guix-info.el, guix-list.el

Now BUI library is used for list/info interfaces, so a big part of elisp
code was removed (the removed code was used as the base for BUI
library).

**** guix-emacs.el

This file stays in Guix as it is used in Emacs package recipe (it is
intended to autoload Emacs packages installed with Guix).

**** guix-init.el

It was deprecated in Guix since March 2016.

*** Requirements

Required Geiser version updated to 0.8.
New requirements: "bui.el" and "dash.el" libraries.
